package org.summer.common.rule;

import org.summer.common.http.Page;

import java.util.List;

/**
 * web服务访问控制接口约束
 * @author gvp9132
 * @date 2024/10/25 19:25
 * @since 1.0.0
 * @param <T> 实体类型
 * @param <I> 主键类型
 */
public interface ControllerRule<T,I> {

    /**
     * 保存数据到数据库
     * @param vo 数据对象
     * @return 保存数据结果,1表示成功，0表示失败
     */
    int save(T vo);

    /**
     * 更新数据,根据主键更新
     * @param vo 数据对象
     * @return 更新影响的行数
     */
    int updateById(T vo);

    /**
     * 根id删除数据
     * @param id 数据编号
     * @return 删除成功的行数
     */
    int deleteById(I id);

    /**
     * 根据id查询数据
     * @param id 数据编号
     * @return 查询结果
     */
    T queryById(I id);

    /**
     * 查询所有数据
     * @return 查询结果
     */
    List<T> queryList();

    /**
     * 查找分页数据
     * @param page 当前页
     * @param size 页数据量
     */
   Page<T> queryPage(Integer page, Integer size);

    /**
     * 查找指定区间的数据
     * @param start 开始位置
     * @param end 结束位置
     */
   List<T> queryLimit(Integer start, Integer end);
}
